import request from '@/config/axios'

const baseURL = '/creative/aigc'

/** 分类 */
export type Catelog = {
  id: string
  name: string
  icon: string
  num: string
}

/** 卡片 */
export type Card = {
  id: string
  name: string
  icon: string
  desc: string
}

/** 卡片表单条目类型 */
export type FormItemType = 'text' | 'textarea' | 'tag' | 'select'

/** 卡片表单条目选项 */
export type FormItemOption = {
  label: string
  value: string
}

/** 卡片表单条目 */
export type FormItem = {
  key: string
  label: string
  require: boolean
  type: FormItemType
  placeholder: string
  defaultValue: string | boolean
  options?: FormItemOption[]
}

/** 历史/收藏记录 */
export type History = {
  text: string
  isCollect: boolean
}

/** 获取全部分类 */
export const listCatelog = () =>
  request.get<Catelog>({
    url: `${baseURL}/list-catelog`
  })

/** 根据分类id获取卡片列表 */
export const listCard = (catelogId: Catelog['id']) =>
  request.get<Card>({
    url: `${baseURL}/list-card-by-catelog-id`,
    params: { catelogId }
  })

/** 根据卡片获取卡片表单 */
export const getForm = (cardId: Card['id']) =>
  request.get<FormItem[]>({
    url: `${baseURL}/get-form-by-card-id`,
    params: { cardId }
  })

/**
 * 传入卡片和数据，生成文本结果
 * @param cardId 卡片id
 * @param formData 表单数据
 * @returns 生成的文本
 */
export const getAiData = (cardId: Card['id'], formData: object) =>
  request.post<string>({
    url: `${baseURL}/get-ai-data`,
    data: {
      cardId,
      formData
    }
  })

/**
 * 传入卡片和生成的内容，保存历史记录
 * @param cardId 卡片id
 * @param text 文本内容
 * @returns 是否保存成功
 */
export const saveResult = (cardId: Card['id'], text: string) =>
  request.post<boolean>({
    url: `${baseURL}/save-result`,
    data: {
      cardId,
      text
    }
  })

/**
 * 根据卡片id获取卡片对应的历史记录
 * @param cardId 卡片id
 * @param isCollect 是否收藏，不传的话默认获取全部
 * @returns 历史记录列表
 */
export const listHistory = (cardId: Card['id'], isCollect?: History['isCollect']) =>
  request.get<History[]>({
    url: `${baseURL}/list-history`,
    params: { cardId, isCollect }
  })
